package co.edu.uniquindio.gui;

import java.awt.Color;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;

import co.edu.uniquindio.delegados.BusquedaDelegado;
import co.edu.uniquindio.delegados.ParametrizadaDelegado;
import co.edu.uniquindio.logica.Marca;
/**
 * esta clase representa una ventana para un Modelo y usa el patron de diseño Singleton para la creacion de esta
 * @author Andres Felipe Abril
 * @author Luis Enrique Robledo
 */
public class VentanaModelo extends JFrame implements ActionListener
{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private JTextField campoNombre;
	private JTextField campoDescripcion;
	public static VentanaModelo me;
	private VentanaMarca ventanaM=VentanaMarca.getVentanaMarca();
	private JButton btnAgregar;
	private JButton btnAceptar ;
	private JComboBox comboMarca;
	private ParametrizadaDelegado param= ParametrizadaDelegado.getParametrizadaDelegado();
	private BusquedaDelegado busqueda=BusquedaDelegado.getBusquedaDelegado();
	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					VentanaModelo frame = new VentanaModelo();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public VentanaModelo()
	{
		initGUI();
	}
	/**
	 * este metodo em permite crear instancia unica de la clase VentanaModelo 
	 * @return
	 */
	public static VentanaModelo getVentanaModelo()
	{
		if (me == null)
			me = new VentanaModelo();
		return me;	
	}
	/**
	 * este metodo inicializa los componentes de la clase
	 */
	public void initGUI()
	{
		setBackground(Color.WHITE);
		setTitle("Modelo");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 225);
		contentPane = new JPanel();
		contentPane.setBackground(Color.WHITE);
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);

		JLabel lblPorFavorIngrese = new JLabel("Por favor ingrese los datos para agregar un modelo : ");
		lblPorFavorIngrese.setBounds(18, 6, 380, 25);
		contentPane.add(lblPorFavorIngrese);

		JLabel lblNombre = new JLabel("Nombre : ");
		lblNombre.setBounds(19, 33, 75, 19);
		contentPane.add(lblNombre);

		JLabel lblMarca = new JLabel("Marca :");
		lblMarca.setBounds(18, 58, 65, 25);
		contentPane.add(lblMarca);

		JLabel lblDescripcion = new JLabel("Descripcion : ");
		lblDescripcion.setBounds(18, 87, 104, 25);
		contentPane.add(lblDescripcion);

		campoNombre = new JTextField();
		campoNombre.setBounds(100, 29, 122, 26);
		contentPane.add(campoNombre);
		campoNombre.setColumns(10);

		comboMarca = new JComboBox(inicializarMarcas());
		comboMarca.setBounds(100, 58, 122, 25);
		contentPane.add(comboMarca);

		campoDescripcion = new JTextField();
		campoDescripcion.setBounds(100, 86, 336, 58);
		contentPane.add(campoDescripcion);
		campoDescripcion.setColumns(10);

		btnAceptar = new JButton("Aceptar");
		btnAceptar.setToolTipText("click para agregar un modelo");
		btnAceptar.setBounds(100, 156, 100, 26);
		btnAceptar.addActionListener(this);
		contentPane.add(btnAceptar);

		btnAgregar = new JButton("Agregar");
		btnAgregar.setToolTipText("click para agregar una marca");
		btnAgregar.setBounds(234, 57, 100, 26);
		btnAgregar.addActionListener(this);
		contentPane.add(btnAgregar);	
	}
	public Marca[]  inicializarMarcas()
	{
		List<Marca> lista=busqueda.obtenerMarcas();
		Marca[] lista2= new Marca[lista.size()];
		for (int i = 0; i < lista.size(); i++) {
			lista2[i]=lista.get(i);
		}
		return	lista2 ;
	}
	/**
	 * este metodo me permite manejar y/o controlan los eventos que generan los componentes de la clase 
	 */
	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		if(e.getSource()==btnAgregar)
		{
			ventanaM.setVisible(true);
		}
		if(e.getSource()==btnAceptar)
		{
			String nombre=campoNombre.getText();
			String descrip=campoDescripcion.getText();
			Marca marca=(Marca)comboMarca.getSelectedItem();
			
			System.out.println("marca"+marca.getNombre());
			
			
		}
	}

	
}
